Redis的持久化方法,各自优缺点,怎么选择?

您所在的位置:网站首页 redis aop rdb Redis的持久化方法,各自优缺点,怎么选择?

Redis的持久化方法,各自优缺点,怎么选择?

2024-07-17 14:55:27| 来源: 网络整理| 查看: 265

持久化:

redis基于内存是数据库,内容存到内存中,也可以存到硬盘中,这个过程就叫持久化。有两种方案,RDB和AOP两种。

RDB

RDB持久化就是把当前进程数据生成快照保存到硬盘的过程RDB文件是⼀个压缩的二进制文件,通过它可以还原某个时刻数据库的状态。由于R DB文件是保存在硬盘上的,所以即使Redis崩溃或者退出,只要RDB文件存在,就可以用它来恢复还原数据库的状态。

持久化触发方式

触发RDB持久化过程分为手动触发和自动触发。

手动触发:

分别对应save和bgsave命令:

save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较大的实例会造成长时间 阻塞,线上环境不建议使用。bgsave命令:Redis进程执行fork操作创建子进程,RDB持久化过程由子进程负责,完成后自动结束。主进程不进行任何IO操作,确保了极高的性能,阻塞只发生在fork阶段,一般时间很短。 自动触发:

以下场景会自动触发RDB持久化:

使用save相关配置,如“ save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave。如果从节点执行全量复制操作,主节点自动执行bgsave生成RDB文件并发送给从节点执行debug reload命令重新加载Redis时,也会自动触发save操作默认情况下行shutdown命令时,如果没有开启AOF持久化功能则自动执行bgsave。 Fork

Fork的作用是复制一个与当前进程一样的子进程,新进程所有的数据(变量、环境变量、程序计数器等)数值都和原进程一致,但是是一个全新的进程,并作为原进程的子进程。它用写时复制技术,即现将数据写入到一个临时文件中,待持久化过程结束了,再用这个临时文件替换持久化好的文件。

 一般情况下父进程和子进程会公用一段物理内存,只有进程空间的各段内容要发生变化时,才将父进程的内容复制一份给子进程。

bgsave流程图:

RDB优缺点 优点

1 . 只有⼀个紧凑的⼆进制文件dump.rdb,非常适合备份、全量复制的场景。

2 . 容灾性好,可以把RDB文件拷贝到远程机器或者文件系统中,用于容灾恢复。

3 . 恢复速度快,RDB恢复数据的速度远远快于AOF的方式

缺点

1、实时性低,RDB是间隔⼀段时间进行持久化,没法做到实时持久化/秒级持久化。如果在这⼀间 隔事件发生故障,数据会丢失(会丢失最后一次快照的所有修改)。

2、存在兼容问题,Redis演进过程存在多个格式的RDB版本,存在老版本Redis无法兼容新版本R DB的问题。

3、Fork的时候,内存中的数据被克隆了一份,大致两倍的膨胀量需要考虑。数据量庞大时消耗性能。

AOF

AOF持久化:以独立日志的方式记录每次写命令(读操作不记录),redis重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。

AOF同步频率设置

appendfsync always

始终同步,每次Redis的写入都会立刻记入日志,性能较差但是数据完整性较好。

appendfsync everysec

每秒同步,每秒记入一次日志,如果宕机,本秒的数据会丢失。

appendfsync no

redis不主动进行同步,把同步时机交给操作系统。

工作流程

AOF的工作流程操作:命令写入 (append)、文件同步(sync)、文件重写(rewrite)、重启加载(load)

流程图:

流程如下:

1)所有的写入命令会追加到aof _ buf(缓冲区)中。

2)AOF缓冲区根据对应的策略向硬盘做同步操作。

3)随着AOF文件越来越大,需要定期对AOF文件进行重写,达到压缩的目的。

4)当Redis服务器重启时,可以加载AOF文件进行数据恢复。

AOF优缺点 优点

1 . 实时性好,aof 持久化可以配置 appendfsync 属性,有 always ,每进行⼀次命令操作就记录 到 aof 文件中⼀次。

2 . 通过 append 模式写文件,即使中途服务器宕机,可以通过 redis- check - aof 工具解决数据⼀致性问题。

缺点

1、AOF文件比RDB文件大,且恢复速度慢。

2 . 数据集大的时候,比RDB启动效率低。

RDB与AOF如何选择? ⼀般来说, 如果想达到足以媲美数据库的数据安全性,应该同时使用两种持久化功能。在这种情况下,当 Redis 重启的时候会优先载入 AOF文件来恢复原始的数据,因为在通常情况下 AOF文件保存的数据集要比RDB文件保存的数据集要完整。如果可以接受数分钟以内的数据丢失,那么可以只使用RDB持久化。有很多用户都只使用AOF持久化,但并不推荐这种方式,因为定时生成 RDB 快照,非常便于进行数据备份, 并且 RDB恢复数据集的速度也要比AOF恢复的速度要快,除此之 外,使用RDB 还可以避免 AOF程序的bug。如果只需要数据在服务器运行的时候存在,也可以不使用任何持久化方式。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭